package com.flyco;

import java.util.ArrayList;
import java.util.List;

import org.jeecgframework.codegenerate.generate.impl.CodeGenerateOne;
import org.jeecgframework.codegenerate.generate.impl.CodeGenerateOneToMany;
import org.jeecgframework.codegenerate.generate.pojo.TableVo;
import org.jeecgframework.codegenerate.generate.pojo.onetomany.MainTableVo;
import org.jeecgframework.codegenerate.generate.pojo.onetomany.SubTableVo;

/**
 * 代码生成器入口【一对多】
 * 【 GUI模式已弃用，请转移Online模式进行代码生成 】
 *
 * @Author flyco
 */
public class JeecgOneToMainUtil {

    /**
     * 一对多(父子表)数据模型，生成方法
     *
     * @param args
     */
    public static void main(String[] args) {

        //单表生成：设置表配置
        TableVo table = new TableVo();
        table.setTableName("oms_order_promotion");//表名
        table.setEntityName("OmsOrderPromotion");//实体名
        table.setEntityPackage("oms");//包名
        table.setFtlDescription("订单活动表");//描述
        try {
            new CodeGenerateOne(table).generateCodeFile(null);
        } catch (Exception e) {
            e.printStackTrace();
        }

        //多表生成
        //第一步：设置主表配置
        MainTableVo mainTable = new MainTableVo();
        mainTable.setTableName("oms_order_discount_record");//表名
        mainTable.setEntityName("OmsOrderDiscountRecord");//实体名
        mainTable.setEntityPackage("oms");//包名
        mainTable.setFtlDescription("订单折扣使用记录");//描述

        //第二步：设置子表集合配置
        List<SubTableVo> subTables = new ArrayList<SubTableVo>();

        //[1].子表一
        //SubTableVo po = new SubTableVo();
        //po.setTableName("sms_promotion_mobile_ref");//表名
        //po.setEntityName("SmsPromotionMobileRef");	    //实体名
        //po.setEntityPackage("sms");	        //包名
        //po.setFtlDescription("会员手机号白名单");       //描述
        //子表外键参数配置

        /*说明:
         * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
         * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
         * c) 多个外键字段，采用逗号分隔;
         */
        //po.setForeignKeys(new String[]{"promotion_id"});
        //subTables.add(po);
        //[2].子表二
        //SubTableVo po2 = new SubTableVo();
        //po2.setTableName("sms_promotion_member_ref");		//表名
        //po2.setEntityName("SmsPromotionMemberRef");			//实体名
        //po2.setEntityPackage("sms"); 				//包名
        //po2.setFtlDescription("活动会员标签关联表");			//描述
        //子表外键参数配置
        /*说明:
         * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
         * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
         * c) 多个外键字段，采用逗号分隔;
         */
        //po2.setForeignKeys(new String[]{"promotion_id"});
        //subTables.add(po2);


        //[3].子表三
        //SubTableVo po3 = new SubTableVo();
        //po3.setTableName("sms_promotion_mobile_ref");		//表名
        //po3.setEntityName("SmsPromotionMobileRef");			//实体名
        //po3.setEntityPackage("sms"); 				//包名
        //po3.setFtlDescription("会员手机号白名单");			//描述
        //子表外键参数配置
        /*说明:
         * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
         * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
         * c) 多个外键字段，采用逗号分隔;
         */
        //po3.setForeignKeys(new String[]{"promotion_id"});
        //subTables.add(po3);


        //[4].子表四
        //SubTableVo po4 = new SubTableVo();
        //po4.setTableName("oms_jddj_order_bill");		//表名
        //po4.setEntityName("OmsJddjOrderBill");			//实体名
        //po4.setEntityPackage("oms"); 				//包名
        //po4.setFtlDescription("京东到家订单结算");			//描述
        //子表外键参数配置
        /*说明:
         * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
         * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
         * c) 多个外键字段，采用逗号分隔;
         */
        //po4.setForeignKeys(new String[]{"jddj_order_id"});
        //subTables.add(po4);

        mainTable.setSubTables(subTables);

        //第三步：一对多(父子表)数据模型,代码生成
        try {
            new CodeGenerateOneToMany(mainTable, subTables).generateCodeFile(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
